In digital communication systems reliable communication of data is important and a number of methods exist to improve the reliability, for example, error correction coding and data interleaving. Error correction coding allows errors in received data to be reliably corrected dependent on a number of errors in a code word being below a certain threshold. However, in the event of burst errors this threshold can be exceeded and the error correction code may fail to reliably correct the errors in the data. Interleaving of symbols and frames in a communication system assists in distributing burst errors between code words, therefore reducing the possibility that the error threshold of the error correction code will be exceeded. However, although interleaving is an important tool in modern communication systems, the benefits of interleaving often come at the cost of increased complexity and memory requirements at both a transmitter and a receiver.